home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / gfx / edit / shadow.lha / shadow.ifx next >
Encoding:
Text File  |  1998-02-22  |  5.5 KB  |  260 lines

  1. /*
  2.  * $VER: shadow 1.1
  3.  * by Carl Licke / Turbid design
  4.  * mailto:carl.licke@swipnet.se
  5.  * http://home2.swipnet.se/~w-24653/
  6.  *
  7.  * Arexx script for ImageFX
  8.  */
  9.  
  10. OPTIONS RESULTS
  11.  
  12. xdiff  =GETCLIP('shadow_xdiff')
  13. ydiff  =GETCLIP('shadow_ydiff')
  14. xincr  =GETCLIP('shadow_xincr')
  15. yincr  =GETCLIP('shadow_yincr')
  16. shade  =GETCLIP('shadow_shade')
  17. gauss  =GETCLIP('shadow_gauss')
  18. mgik   =GETCLIP('shadow_mgik')
  19. aalias =GETCLIP('shadow_aalias')
  20. bgswap =GETCLIP('shadow_bgswap')
  21. shcol  =GETCLIP('shadow_shcol')
  22. bgcol  =GETCLIP('shadow_bgcol')
  23.  
  24. /* ------ here you may change the defaults ------ */
  25. IF xdiff=''  THEN xdiff=6
  26. IF ydiff=''  THEN ydiff=6
  27. IF xincr=''  THEN xincr=15
  28. IF yincr=''  THEN yincr=15
  29. IF shade=''  THEN shade=50
  30. IF gauss=''  THEN gauss=2
  31. IF mgik=''   THEN mgik=0
  32. IF aalias='' THEN aalias=0
  33. IF bgswap='' THEN bswap=0
  34. IF shcol=''  THEN shcol=0
  35. IF bgcol=''  THEN bgcol=0
  36.  
  37. Gadget.1 = 'I/140/18/x difference (+|-)/'xdiff
  38. Gadget.2 = 'I/140/35/y difference (+|-)/'ydiff
  39. Gadget.3 = 'I/140/52/x size increase/'xincr
  40. Gadget.4 = 'I/140/69/y size increase/'yincr
  41. Gadget.5 = 'I/140/86/shade (0-100)/'shade
  42. Gadget.6 = 'I/140/103/softness (0-5)/'gauss
  43. Gadget.7 = 'X/230/19/magic scissors/'mgik
  44. Gadget.8 = 'X/230/36/anti alias/'aalias
  45. Gadget.9 = 'X/230/53/background from swap/'bgswap
  46. Gadget.10= 'X/230/70/pick color for shadow/'shcol
  47. Gadget.11= 'X/230/87/pick color for backg./'bgcol
  48. Gadget.12= 'X/230/104/save these settings/1'
  49.  
  50. ComplexRequest '"shadow"' 12 Gadget 427 140
  51. IF rc ~= 0 THEN EXIT
  52.  
  53. xdiff  = result.1
  54. ydiff  = result.2
  55. xincr  = result.3
  56. yincr  = result.4
  57. shade  = result.5
  58. gauss  = result.6
  59. mgik   = result.7
  60. aalias = result.8
  61. bgswap = result.9
  62. shcol  = result.10
  63. bgcol  = result.11
  64. saveit = result.12
  65.  
  66. ifxver=0
  67. ADDRESS COMMAND 'list ImageFX:Matrix/GuassianLow ImageFX:Matrix/GaussianMedium ImageFX:Matrix/GuassianHigh >NIL:'
  68. IF rc = 0 THEN ifxver=1
  69. ADDRESS COMMAND 'list ImageFX:Storage/Convolve/GaussianLow ImageFX:Storage/Convolve/GaussianMedium ImageFX:Storage/Convolve/GaussianHigh >NIL:'
  70. IF rc = 0 THEN ifxver=2
  71. IF ifxver=0 THEN DO
  72.   RequestNotify 'Error! Please contact carl.licke@swipnet.se'
  73.   EXIT
  74. END
  75.  
  76. IF saveit=1 THEN DO
  77.   CALL SETCLIP('shadow_xdiff', xdiff)
  78.   CALL SETCLIP('shadow_ydiff', ydiff)
  79.   CALL SETCLIP('shadow_xincr', xincr)
  80.   CALL SETCLIP('shadow_yincr', yincr)
  81.   CALL SETCLIP('shadow_shade', shade)
  82.   CALL SETCLIP('shadow_gauss', gauss)
  83.   CALL SETCLIP('shadow_mgik', mgik)
  84.   CALL SETCLIP('shadow_aalias', aalias)
  85.   CALL SETCLIP('shadow_bgswap', bgswap)
  86.   CALL SETCLIP('shadow_shcol', shcol)
  87.   CALL SETCLIP('shadow_bgcol', bgcol)
  88. END
  89.  
  90. shr=0
  91. shg=0
  92. shb=0
  93. bgr=255
  94. bgg=255
  95. bgb=255
  96. xdiff=xdiff/2
  97. ydiff=ydiff/2
  98.  
  99. GetPalette '0'
  100. PARSE VAR result r g b
  101.  
  102. IF bgcol=1 & bgswap=1 THEN DO
  103.   RequestNotify 'No background pick, you told me to use swap.'
  104.   bgcol=0
  105. END
  106.  
  107. IF shcol=1 THEN DO
  108.   ActiveColor 0
  109.   Message 'pick shadow color'
  110.   Pick
  111.   WaitFor SELECTUP
  112.   GetPalette '-1'
  113.   PARSE VAR result shr shg shb
  114.   SetPalette 0 r g b
  115.   Message ''
  116. END
  117.  
  118. IF bgcol=1 THEN DO
  119.   ActiveColor 0
  120.   Message 'pick background color'
  121.   Pick
  122.   WaitFor SELECTUP
  123.   GetPalette '-1'
  124.   PARSE VAR result bgr bgg bgb
  125.   Message ''
  126. END
  127.  
  128. Redraw Off
  129. SaveUndo
  130. Undo Off
  131. AlphaChannel Off
  132. EdgeMode Normal 0
  133. FillMode Solid 0 0 0 SMOOTH
  134. Grey2Color
  135. Transparency 0 0 1
  136.  
  137. GetMain
  138. PARSE VAR result name width height depth
  139.  
  140. IF bgswap=1 THEN DO
  141.   Swap
  142.   SaveBufferAs ILBM "T:shadowswaptemp.ilbm"
  143.   Swap
  144.   SaveBufferAs ILBM "T:shadowtemp.ilbm"
  145. END
  146.  
  147. CALL pickitup
  148.  
  149. newwidth=width+xincr
  150. newheight=height+yincr
  151.  
  152. Scale newwidth newheight+8 BORDER
  153.  
  154. ClearBuffer bgr bgg bgb FORCE
  155.  
  156. ActiveColor 0
  157. SetPalette '-1' shr shg shb
  158.  
  159. IF bgswap=1 THEN SetPalette '-1' 0 0 0
  160.  
  161. Blend shade
  162. DrawMode Color
  163. NewArea
  164. AddArea (newwidth/2)+xdiff (newheight/2)+ydiff
  165. FreeDraw
  166. DrawMode Normal
  167. Blend 100
  168.  
  169. IF ifxver=1 THEN DO
  170. IF gauss=1 THEN DO
  171.   Convolve "Matrix/GuassianLow"
  172. END
  173. IF gauss=2 THEN DO
  174.   Convolve "Matrix/GaussianMedium"
  175. END
  176. IF gauss=3 THEN DO
  177.   Convolve "Matrix/GuassianHigh"
  178. END
  179. IF gauss=4 THEN DO
  180.   Convolve "Matrix/GuassianHigh"
  181.   Convolve "Matrix/GuassianHigh"
  182. END
  183. IF gauss=5 THEN DO
  184.   Convolve "Matrix/GuassianHigh"
  185.   Convolve "Matrix/GuassianHigh"
  186.   Convolve "Matrix/GuassianHigh"
  187. END
  188. END
  189.  
  190. IF ifxver=2 THEN DO
  191. IF gauss=1 THEN DO
  192.   Convolve "Storage/Convolve/GaussianLow"
  193. END
  194. IF gauss=2 THEN DO
  195.   Convolve "Storage/Convolve/GaussianMedium"
  196. END
  197. IF gauss=3 THEN DO
  198.   Convolve "Storage/Convolve/GaussianHigh"
  199. END
  200. IF gauss=4 THEN DO
  201.   Convolve "Storage/Convolve/GaussianHigh"
  202.   Convolve "Storage/Convolve/GaussianHigh"
  203. END
  204. IF gauss=5 THEN DO
  205.   Convolve "Storage/Convolve/GaussianHigh"
  206.   Convolve "Storage/Convolve/GaussianHigh"
  207.   Convolve "Storage/Convolve/GaussianHigh"
  208. END
  209. END
  210.  
  211. Crop 0 0 newwidth newheight
  212.  
  213. IF bgswap=1 THEN DO
  214.   Negative
  215.   SaveAlphaAs ILBM "T:shadowalphatemp.ilbm"
  216.   Buffer2Alpha
  217.   PickupSwap
  218.   Region Full
  219.   ClearBuffer 0 0 0 FORCE
  220.   FillMode Tile 0 0 0 Smooth
  221.   FloodFill 0 0 1
  222.   FillMode Solid 0 0 0 Smooth
  223.   Swap
  224.   CreateBuffer newwidth newheight shr shg shb FORCE
  225.   Swap
  226.   Merge 100 ALPHA
  227.   Swap
  228.   KillAlpha
  229.   LoadBuffer "T:shadowtemp.ilbm" Force
  230.   CALL pickitup
  231.   LoadBuffer "T:shadowswaptemp.ilbm" Force
  232.   LoadAlpha "T:shadowalphatemp.ilbm" Force
  233.   Swap
  234.   ADDRESS COMMAND 'Delete "T:shadowtemp.ilbm" QUIET'
  235.   ADDRESS COMMAND 'Delete "T:shadowalphatemp.ilbm" QUIET'
  236.   ADDRESS COMMAND 'Delete "T:shadowswaptemp.ilbm" QUIET'
  237. END
  238.  
  239. IF aalias=1 THEN EdgeMode AntiAlias 0
  240.  
  241. NewArea
  242. AddArea (newwidth/2)-xdiff (newheight/2)-ydiff
  243. FreeDraw
  244. EdgeMode Normal 0
  245. KillBrush
  246. SetPalette 0 r g b
  247. Redraw On
  248. Undo On
  249.  
  250. EXIT
  251.  
  252. pickitup:
  253.   IF mgik=1 THEN
  254.     MagicScissors
  255.   ELSE
  256.     Scissors
  257.   Box 0 0 width height
  258.   Region Full
  259.   RETURN
  260.